
1) Rotate every triangle in a model about its "center point" by an angle of n degrees, where n is a parameter to the shader's constructor.

2) Scale every triangle, relative to its center point, by a factor of s, where s is a parameter to the shader's constructor. So if s < 1, the triangles shrink, and if s > 1, the triangles will overlap each other.

3) Tessellate every triangle into four sub-triangles by connecting the center points of each edge, and then delete the center sub-triangle.

4) Tessellate every triangle into four sub-triangles by connecting the center points of each edge, and then randomly raise (or lower) each of the three new vertices (perpendicular to the plane of the triangle) and create four new triangles using the original three vertices and the three perturbed vertices. This will make every model into a very rough, bumpy, crinkled, model.

5) Given three functions r(x,y,z), g(x,y,z) and b(x,y,z), color each vertex of every triangle according to the three functions. So for every triangle t, and for i = 0, 1, 2,
  t.v[i].r = r(t.v[i].x, t.v[i].y, t.v[i].z)
  t.v[i].g = g(t.v[i].x, t.v[i].y, t.v[i].z)
  t.v[i].b = b(t.v[i].x, t.v[i].y, t.v[i].z)
The coordinates (x,y,z) can be either model, world, or view coordinates.